//
//  Baby.h
//  Day7
//
//  Created by wenjim on 17/10/20.
//  Copyright © 2017年 WenJim. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "BabyProtocol.h"

@class Nanny,Student;

/*
 什么是代理设计模式
 纸巾品牌和超市
 超市就是纸巾品牌的代理，它可以帮助纸巾品牌卖纸巾
 也就是说，代理可以帮助另外一个类做一些事情
 
 代理设计模式的应用场景
 1. 当A对象想监听B对象的一些变化时，可以使用代理设计模式
 保姆想监听婴儿的变化，那么保姆就可以成为婴儿的代理，当婴儿发生变化后，保姆可以监听到
 
 2. 当B对象发生一些事情，想通知A对象的时候，可以使用代理设计模式
 婴儿想通知保姆，那么就可以让保姆成为婴儿的代理，只要保姆成为婴儿的代理，以后婴儿发生变化就可以通知保姆
 
 
 3.当对象A无法处理某些行为的时候,想让对象B帮忙处理(让对象B成为对象A的代理对象)
 婴儿无法自己吃东西，也无法自己入睡，所以可以让保姆帮忙处理，只要让保姆成为婴儿的代理，就可以喂婴儿吃东西和哄婴儿睡觉
 
 */

@interface Baby : NSObject

// 饥饿程度
@property (nonatomic,assign) int  hungry;
// 睡意
@property (nonatomic ,assign) int sleep;
// 吃东西
-(void) food;
// 困了
-(void)sleepy;

// 让婴儿拥有一个保姆
//@property (nonatomic,strong) Nanny * nanny;
//@property (nonatomic,strong) Student * student;

// 如果使用id类型来接收保姆， 将来如果换保姆了，婴儿类不用修改代码
@property (nonatomic,strong) id<BabyProtocol> nanny;

@end
